package main

import "fmt"
/**
在一组有序数组中，将数组一分为二，将要查询的元素和分割点进行比较，分为三种情况
相等直接返回
元素大于分割点，在分割点右侧继续查找
元素小于分割点，在分割点左侧继续查找
 */
func main() {
	arr := make([]int, 1024*1024, 1024*1024)
	for i := 0; i < 1024*1024; i++ {
		arr[i] = i + 1
	}
	id := binSearch(arr, 1024)
	if id != -1 {
		fmt.Println(id, arr[id])
	} else {
		fmt.Println("没有找到数据")
	}
}

func binSearch(arr []int, target int) int {
	l := len(arr)
	mid := l / 2
	low := 0
	high := l -1
	for low <= high {
		if arr[mid] == target {
			return arr[mid]
		}else if arr[mid] < target{
			low = mid
		}else if arr[mid] > target {
			high = mid
		}
		mid = (low + high) / 2

	}
	return -1
}
